//
//  MantisGCDTimer.h
//  Runner
//
//  Created by iosdeveloper on 2020/8/30.
//  Copyright © 2020 The Chromium Authors. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN
//task
typedef void(^ExeBlock) (void);
//取消计时条件
typedef BOOL(^CancleBlock) (void);

@interface MantisGCDTimer : NSObject
/**
 当前程延迟执行

 @param delay 延迟时间
 @param task 任务
 */
+ (void)delayTime:(NSTimeInterval)delay withBlock:(ExeBlock)task;

/**
 子线程延迟执行

 @param delay 延迟时间
 @param task 任务
 */
+ (void)backgroundDelayTime:(NSTimeInterval)delay withBlock:(ExeBlock)task;

/**
 定时器当前线程

 @param duration 间隔
 @param repeatTimes 执行次数，之后推出
 @param task 任务
 @param finished 完成通知
 return 返回当前定时器的ID
 */
+ (int)repeatWithDuration:(NSTimeInterval)duration
               repeatTimes:(int)repeatTimes
                  withTask:(ExeBlock)task
                  finished:(ExeBlock)finished;

/**
 定时器当前线程

 @param duration 时间间隔
 @param task 执行任务
 @param cancle 取消条件
 return 返回当前定时器的ID
 */
+ (int)repeatWithDuration:(NSTimeInterval)duration
                  withTask:(ExeBlock)task
                  Cancle:(CancleBlock)cancle;

/**
 定时器子线程
 
 @param duration 间隔
 @param repeatTimes 执行次数，之后推出
 @param task 任务
 @param finished 完成通知
 return 返回当前定时器的ID
 */
+ (int)backgroundRepeatWithDuration:(NSTimeInterval)duration
               repeatTimes:(int)repeatTimes
                  withTask:(ExeBlock)task
                  finished:(ExeBlock)finished;

/**
 定时器子线程
 
 @param duration 时间间隔
 @param task 执行任务
 @param cancle 取消条件
 return 返回当前定时器的ID

 */
+ (int)backgroundRepeatWithDuration:(NSTimeInterval)duration
                  withTask:(ExeBlock)task
                    Cancle:(CancleBlock)cancle;


/**
  停止
 */
+ (void)stopGCDTimerWithID:(int)timerID;



@end

NS_ASSUME_NONNULL_END
